#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017-09-26 16:52:41
# @Author  : WUQINGLONG
# @Contact : 1603763721@qq.com

# =======================================
# 优美胜于丑陋（Python 以编写优美的代码为目标）
# 明了胜于晦涩（优美的代码应当是明了的，命名规范，风格相似）
# 简洁胜于复杂（优美的代码应当是简洁的，不要有复杂的内部实现）
# 复杂胜于凌乱（如果复杂不可避免，那代码间也不能有难懂的关系，要保持接口简洁）
# 扁平胜于嵌套（优美的代码应当是扁平的，不能有太多的嵌套）
# 间隔胜于紧凑（优美的代码有适当的间隔，不要奢望一行代码解决问题）
# 可读性很重要（优美的代码是可读的）
# =======================================

"""
功能描述：
    1.压缩解压缩
"""

import gzip
import sys

VERSION2 = (sys.version_info[0] == 2)

if VERSION2:
    from cStringIO import StringIO
else:
    from io import StringIO


def compress(data):
    if VERSION2:
        buf = StringIO()
        with gzip.GzipFile(mode='wb', fileobj=buf) as f:
            f.write(data)
        return buf.getvalue()
    else:
        return gzip.compress(bytes(data, 'utf-8'))


def decompress(data):
    if VERSION2:
        buf = StringIO(data)
        with gzip.GzipFile(mode='rb', fileobj=buf) as f:
            return f.read()
    else:
        return gzip.decompress(data).decode('utf-8')


if __name__ == '__main__':
    txt = 'hello world!hello world!hello world!hello world!hello world!hello world!hello world!hello world!hello world!'
    compress_txt = compress(txt)
    print('原始的字符串：%s' % txt)
    print('压缩的字符串：%s' % compress_txt)
    print('解压的字符串：%s' % decompress(compress_txt))
    print('压缩前后字符串长度：%d -> %d，压缩率：%.2f%%' % (len(txt), len(compress_txt), (len(compress_txt) / float(len(txt))) * 100))
